package com.shardingsphere.example.annotation;

import java.lang.annotation.*;

/**
 * 分表注解
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ShardingTable {

    /**
     * 逻辑表名
     */
    String logicTable();

    /**
     * 分表键字段名
     */
    String shardingKey() default "";

    /**
     * 分表数量
     */
    int tableCount() default 2;

    /**
     * 分表策略类型
     */
    ShardingStrategy strategy() default ShardingStrategy.MOD_HASH;

    enum ShardingStrategy {
        /**
         * 取模哈希
         */
        MOD_HASH,

        /**
         * 按范围分表
         */
        RANGE
    }
}

